The Twelve-Factor App
I. コードベース
バージョン管理されている1つのコードベースと複数のデプロイ
II. 依存関係
依存関係を明示的に宣言し分離する
III. 設定
設定を環境変数に格納する
IV. バックエンドサービス
バックエンドサービスをアタッチされたリソースとして扱う
V. ビルド、リリース、実行
ビルド、リリース、実行の3つのステージを厳密に分離する
VI. プロセス
アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する
VII. ポートバインディング
ポートバインディングを通してサービスを公開する
VIII. 並行性
プロセスモデルによってスケールアウトする
IX. 廃棄容易性
高速な起動とグレースフルシャットダウンで堅牢性を最大化する
X. 開発/本番一致
開発、ステージング、本番環境をできるだけ一致させた状態を保つ
XI. ログ
ログをイベントストリームとして扱う
XII. 管理プロセス
管理タスクを1回限りのプロセスとして実行する